home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / U-Utilities / (c)u1.d64 / lister.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  3KB  |  102 lines

  1. 90 REM  LISTER
  2. 100 DATA 19,147,17,145,29,157,18,146,20,148,141,32
  3. 110 REM 80-COLUM CURSOR STUFF
  4. 120 DATA 7,21,149,22,150,14,142,25,153
  5. 130 DATA 15,143
  6. 140 REM VIC STUFF
  7. 150 DATA 144,5,28,159,156,30,31,158
  8. 160 DATA 8,9,133,137,134,138,135,139,136,140
  9. 170 DATA HOME,CLEAR,DOWN,UP,RIGHT,LEFT,RVS,RVOFF,DEL,INST,RETURN,SPACE
  10. 180 DATA BELL,D.LINE,I.LINE,ER.BEGIN,ER.END,TEXT,GRAPHIC,SCROLL.UP,SCROLL.DOWN
  11. 190 DATA TOP,BOTTOM
  12. 200 DATA BLACK,WHITE,RED,CYAN,MAGENTA,GREEN,BLUE,YELLOW
  13. 210 DATA LOCK,UNLOCK,F1,F2,F3,F4,F5,F6,F7,F8
  14. 220 DIMA(40),A$(40),K$(90):POKE53281,0:POKE53280,11:PRINT"[147]"
  15. 230 FORJ=0TO40:READA(J):NEXTJ
  16. 240 FORJ=0TO40:READA$(J):NEXTJ
  17. 250 DATA END,FOR,NEXT,DATA,INPUT#,INPUT,DIM,READ,LET,GOTO,RUN,IF,RESTORE,GOSUB
  18. 260 DATA RETURN,REM,STOP,ON,WAIT,LOAD,SAVE,VERIFY,DEFINE,POKE,PRINT#,PRINT,CONTINUE
  19. 270 DATA LIST,CLR,CMD,SYS,OPEN,CLOSE,GET,NEW,TAB(,TO,FN,SPC(,THEN,NOT,STEP
  20. 280 DATA +,-,*,/,^,AND,OR,>,=,<,SGN,INT,ABS,USR,FRE,POS,SQR,RND,LOG,EXP,COS
  21. 290 DATA SIN,TAN,ATN,PEEK,LEN,STR$,VAL,ASC,CHR$,LEFT$,RIGHT$,MID$,GO,CONCAT
  22. 300 DATA DOPEN,DCLOSE,RECORD,HEADER,COLLECT,BACKUP,COPY,APPEND,DSAVE,CATALOG
  23. 310 DATA RENAME,SCRATCH,DIRECTORY
  24. 320 FORJ=0TO89:READK$(J):NEXTJ
  25. 400 CLOSE1:INPUT"NAME OF PROGRAM FILE ?";G$
  26. 410 OPEN1,8,3,G$+",P,R"
  27. 420 GET#1,A$,B$
  28. 430 IFA$<>CHR$(1)ANDA$<>""THEN400
  29. 440 IFA$=""THENA$=CHR$(1):GET#1,X$
  30. 450 INPUT"LINE NUMBER RANGE ? [157][157][157]";Z$
  31. 460 L0=0:L1=0:L2=1E9
  32. 470 FORJ=1TOLEN(Z$):Y$=MID$(Z$,J,1)
  33. 480 Y=ASC(Y$):IFY>=48ANDY<=57GOTO510
  34. 490 IFY=32THEN510
  35. 500 L0=J:IFY<>45THEN600
  36. 510 NEXTJ
  37. 520 IFL0<LEN(Z$)THENL2=VAL(MID$(Z$,L0+1)):IFL2=0THENL2=1E9
  38. 530 IFL0>1THENL1=VAL(Z$)
  39. 540 IFL0=0THENL1=L2
  40. 600 P3$="[":P4$="]":INPUT"LIST TO PRINTER  N[157][157][157]";Z$
  41. 610 P=3:IFASC(Z$)=89THENP=4:L$="":P3$=CHR$(219):P4$=CHR$(221)
  42. 620 P1$="[":P2$="]":INPUT"GRAPHICS OR TEXT  G[157][157][157]";Z$
  43. 630 POKE53272,21:IFASC(Z$)=84THENPOKE53272,23:M$=L$:P1$=P3$:P2$=P4$
  44. 640 INPUT"TRANSLATE CURSOR MOVES  N[157][157][157]";Z$
  45. 650 IFASC(Z$)=89THENT7=1
  46. 660 OPEN4,P:F$=P1$
  47. 670 J=80:IFP<>3GOTO690
  48. 680 PRINT"[147]":PRINT"++++++++++++":FORJ=1TO81:IFPEEK(1024+J)=32THENNEXTJ
  49. 690 L9=J:PRINT#4,"PROGRAM:  ";G$
  50. 700 REM  NEW LINE
  51. 710 GOSUB2010:Q=0:T1=1:C1=-1:GET#1,A$,B$:IFST<>0THEN3000
  52. 720 IFB$=""GOTO3000
  53. 730 GET#1,A$,B$
  54. 740 L=ASC(A$+CHR$(0))+ASC(B$+CHR$(0))*256
  55. 750 IFL<L1THEN1080
  56. 760 IFL>L2THEN3000
  57. 770 F2=1:PRINT#4,M$;P$:P$=STR$(L)+" "
  58. 800 REM   START TEXT HERE
  59. 810 GET#1,A$:IFA$=""GOTO710
  60. 820 T=0:A=ASC(A$):IFA=32ANDF$=","GOTO840
  61. 830 IFQ=0OR(AAND127)>31ORT7=0THEN900
  62. 840 FORJ=0TO40:IFA=A(J)THENB$=A$(J):GOTO860
  63. 850 NEXTJ:GOTO1000
  64. 860 IFB$=B1$THENB=B+1:GOTO810
  65. 870 IFB>0THENA$=MID$(STR$(B+1),2)+F$+B$:GOTO890
  66. 880 A$=F$+B$
  67. 890 B=0:B1$=B$:F$=",":F1=1:GOTO1010
  68. 900 A=A-128:IFA<0ORQ<>0GOTO1000
  69. 910 IFA=127THENA$="":GOTO1000
  70. 920 T=1:A$=K$(A)
  71. 930 IFA=15THENQ=2
  72. 1000 GOSUB2010
  73. 1010 IFA$=CHR$(34)THENQ=1-Q
  74. 1020 REM  C=-1 FOR ALPHANUMERIC
  75. 1030 C=ASC(LEFT$(A$,1)):C=(C<48ORC>57)AND(C<65ORC>90)
  76. 1040 IFT<>T1ORT=1THENT1=T:IF NOT C AND NOT C1 THENP$=P$+" ":GOSUB2500
  77. 1050 C=ASC(RIGHT$(A$,1)):C1=((C<48ORC>57)AND(C<65ORC>90))ORA=37
  78. 1060 P$=P$+A$:GOSUB2500
  79. 1070 GOTO810
  80. 1080 REM  SKIP TO NEXT LINE
  81. 1090 GET#1,A$:IFA$=""THEN710
  82. 1100 GOTO1090
  83. 2000 REM   CLOSE OFF CURSOR EXPRESSION
  84. 2010 IFF1=0GOTO2040
  85. 2020 IFB>0THENP$=P$+MID$(STR$(B+1),2):GOSUB2500
  86. 2030 B=0:F1=0:B1$="":P$=P$+P2$:GOSUB2500:F$=P1$
  87. 2040 RETURN
  88. 2500 IFLEN(P$)<L9GOTO2600
  89. 2510 FORJ=L9TOL9*.6STEP-1
  90. 2520 IFMID$(P$,J,1)=":"GOTO2580
  91. 2530 NEXTJ:FORJ=L9-1TOL9*.6-1STEP-1
  92. 2540 P=ASC(MID$(P$,J))
  93. 2550 IFP=91GOTO2580
  94. 2560 IFP=59ORP=44ORP=93THENJ=J+1:GOTO2580
  95. 2570 NEXTJ:J=L9-1
  96. 2580 PRINT#4,M$;LEFT$(P$,J-1)
  97. 2590 P$="    "+MID$(P$,J)
  98. 2600 RETURN
  99. 3000 IFLEN(P$)>0THENF2=1:PRINT#4,M$;P$
  100. 3010 IFF2=0THENPRINT"** NO LINES FOUND **"
  101. 3020 CLOSE1:GOSUB2000:CLOSE4
  102.